import request from '@/config/axios'
import type { Dayjs } from 'dayjs'

/** 设备信息 */
export interface Devices {
  deviceId: number // device_id
  inserted: string | Dayjs // 插入时间
  hostname?: string // IP地址
  sysName: string // 系统名称
  display: string // 显示名称
  ip: byte[] // ip
  overwriteIp: string // overwrite_ip
  community: string // SNMP社区字符串
  authlevel: string // 认证级别
  authname: string // authname
  authpass: string // authpass
  authalgo: string // 认证算法
  cryptopass: string // 加密密码
  cryptoalgo: string // 加密算法
  snmpver?: string // SNMP版本
  port?: number // port
  transport?: string // 传输协议
  timeout: number // timeout
  retries: number // 重试次数
  snmpDisable?: boolean // 是否启用snmp，0为启用，其他为禁用
  bgpLocalAs: number // BGP本地自治系统号
  sysObjectID: string // sysObjectID
  sysDescr: string // 系统描述
  sysContact: string // 默认系统联系人
  version: string // 版本
  hardware: string // 硬件
  features: string // 特征
  locationId: number // 操作系统
  os: string // 操作系统
  status?: boolean // 状态，1为在线，其他为离线
  statusReason?: string // status_reason
  ignore?: boolean // ignore
  disabled?: boolean // 0为不禁止，其他为禁止
  uptime: number // 系统运行时间
  agentUptime?: number // 代理运行时间
  lastPolled: string | Dayjs // 最后轮询时间
  lastPollAttempted: string | Dayjs // 最后轮询尝试时间
  lastPolledTimetaken: number // 最后轮询耗时
  lastDiscoveredTimetaken: number // 最后发现耗时
  lastDiscovered: string | Dayjs // 最后发现时间
  lastPing: string | Dayjs // 最后Ping时间
  lastPingTimetaken: number // 最后Ping耗时
  purpose: string // 用途
  type?: string // type
  serial: string // 序列号
  icon: string // icon
  pollerGroup?: number // 轮询组
  overrideSyslocation: boolean // 是否覆盖系统位置
  notes: string // notes
  portAssociationMode?: number // 端口关联模式
  maxDepth?: number // 最大深度
  disableNotify?: boolean // 是否禁用通知
  ignoreStatus?: boolean // 是否忽略状态
  quyu: number // quyu
  quyusub: number // 子区域
  tag1: string // tag1
  tag2: string // tag2
  tag3: string // tag3
  tag4: string // tag4
  tag5: string // tag5
  tag6: string // tag6
  tag7: string // tag7
  tag8: string // tag8
  tag9: string // tag9
  tag10: string // tag10
  tag11: string // tag11
  tag12: string // tag12
  tag13: string // tag13
  xianlu: string // xianlu
  snmpyes: string // SNMP启用状态
  typeName: string // 类型名称
  x: number // 拓扑图x
  y: number // 拓扑图y
}

// 设备 API
export const DevicesApi = {
  // 查询设备分页
  getDevicesPage: async (params: any) => {
    return await request.get({ url: `/business/devices/page`, params })
  },

  // 查询设备详情
  getDevices: async (id: number) => {
    return await request.get({ url: `/business/devices/get?id=` + id })
  },

  // 新增设备
  createDevices: async (data: Devices) => {
    return await request.post({ url: `/business/devices/create`, data })
  },

  // 修改设备
  updateDevices: async (data: Devices) => {
    return await request.put({ url: `/business/devices/update`, data })
  },

  // 删除设备
  deleteDevices: async (id: number) => {
    return await request.delete({ url: `/business/devices/delete?id=` + id })
  },

  /** 批量删除设备 */
  deleteDevicesList: async (ids: number[]) => {
    return await request.delete({ url: `/business/devices/delete-list?ids=${ids.join(',')}` })
  },

  // 导出设备 Excel
  exportDevices: async (params) => {
    return await request.download({ url: `/business/devices/export-excel`, params })
  }
}
